package cn.iocoder.yudao.module.eval.controller.admin.template.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import javax.validation.constraints.*;

@Schema(description = "管理后台 - 评价模板新增/修改 Request VO")
@Data
public class EvalTemplateSaveReqVO {

    @Schema(description = "主键ID", example = "1024")
    private Long id;

    @Schema(description = "模板名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "数控车工理论考试模板")
    @NotEmpty(message = "模板名称不能为空")
    @Size(max = 100, message = "模板名称长度不能超过100个字符")
    private String templateName;

    @Schema(description = "模板代码", requiredMode = Schema.RequiredMode.REQUIRED, example = "TEMPLATE-001")
    @NotEmpty(message = "模板代码不能为空")
    @Size(max = 50, message = "模板代码长度不能超过50个字符")
    private String templateCode;

    @Schema(description = "评价方式类型ID", example = "1")
    private Long methodTypeId;

    @Schema(description = "模板版本", example = "v1.0")
    private String templateVersion;

    @Schema(description = "模板内容", requiredMode = Schema.RequiredMode.REQUIRED, example = "{\"subjects\": []}")
    @NotEmpty(message = "模板内容不能为空")
    private String templateContent;

    @Schema(description = "适用职业", example = "电工")
    private String applicableProfession;

    @Schema(description = "适用等级", example = "3")
    private String applicableLevel;

    @Schema(description = "适用行业", example = "制造业")
    private String applicableIndustry;

    @Schema(description = "模板类型", example = "1")
    private Integer templateType;

    @Schema(description = "总分", example = "100")
    private Integer totalScore;

    @Schema(description = "合格分数", example = "60")
    private Integer passScore;

    @Schema(description = "时间限制（分钟）", example = "180")
    private Integer timeLimit;

    @Schema(description = "自定义字段配置", example = "{\"scoring_rules\": {}}")
    private String customFieldsConfig;

    @Schema(description = "模板状态", example = "1")
    private Integer templateStatus;

    @Schema(description = "是否默认模板", example = "false")
    private Boolean isDefault;

    @Schema(description = "使用次数", example = "0")
    private Integer usageCount;

} 